package com.zy.service.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.zy.common.pojo.TreeNode;
import com.zy.common.util.TaotaoResult;
import com.zy.mapper.TbContentCategoryMapper;
import com.zy.pojo.TbContentCategory;
import com.zy.pojo.TbContentCategoryExample;
import com.zy.pojo.TbContentCategoryExample.Criteria;
import com.zy.service.ContentCategoryService;

/**
 * 内容分类列表管理
 */
@Service
public class ContentCategoryServiceImpl implements ContentCategoryService {

	@Autowired
	private TbContentCategoryMapper contentCategoryMapper;

	@Override
	public List<TreeNode> getContentCategoryList(long parentId) {
		// 创建模板对象
		TbContentCategoryExample example = new TbContentCategoryExample();
		// 创建条件对象
		Criteria createCriteria = example.createCriteria();
		// 设置条件
		createCriteria.andParentIdEqualTo(parentId);
		// 查询
		List<TbContentCategory> list = contentCategoryMapper.selectByExample(example);
		// 遍历取出需要的数据
		List<TreeNode> resultList = new ArrayList<>();
		for (TbContentCategory tbContentCategory : list) {
			// 创建一个节点
			TreeNode node = new TreeNode();
			node.setId(tbContentCategory.getId());
			node.setText(tbContentCategory.getName());
			node.setState(tbContentCategory.getIsParent() ? "closed" : "open");
			resultList.add(node);
		}
		return resultList;
	}

	@Override
	public TaotaoResult insertContentCategory(long parentId, String name) {
		TbContentCategory contentCategory = new TbContentCategory();
		contentCategory.setName(name);
		contentCategory.setIsParent(false);
		// '状态。可选值:1(正常),2(删除)',
		contentCategory.setStatus(1);
		contentCategory.setParentId(parentId);
		contentCategory.setSortOrder(1);
		contentCategory.setCreated(new Date());
		contentCategory.setUpdated(new Date());
		contentCategoryMapper.insert(contentCategory);
		// 查看当前添加节点的父节点的isParent列状态是否为true,改为true
		TbContentCategory parentCat = contentCategoryMapper.selectByPrimaryKey(parentId);
		if (!parentCat.getIsParent()) {
			//变为父节点
			parentCat.setIsParent(true);
			// 更新父节点状态
			contentCategoryMapper.updateByPrimaryKey(parentCat);
		}
		return TaotaoResult.ok(contentCategory);
	}

}
